import { createRouter,createWebHashHistory } from "vue-router";
import type {Router,RouteRecordRaw} from "vue-router";
import {doBreadcrumb} from "@/Breadcrumb"

const routes:RouteRecordRaw[] = [
    {
        path:"/",
        redirect:"/Login",
        meta:{
            requrieAuth:false
        }
    },
    {
        path:"/Login",
        component:()=>import("../views/Login.vue"),
        meta:{
            requrieAuth:false
        }
    },
    {
        name:"Admin",
        path:"/Admin",
        component:()=>import("../views/Admin/Layout/index.vue"),
        children:[]
    },
    {
        name:"NotFound",
        path:'/:pathMatch(.*)*',
        component:()=>import("../views/NotFound/index.vue"),
    }
]

const router:Router = createRouter({
    history:createWebHashHistory(),
    routes:routes
})

// 1、全局前置守卫：
//  1）、调用时机：
//      当（地址栏上的）路径发生变化时，都会 先 调用beforeEach的回调函数。
//       然后，根据回调函数的结果（next（）的参数）进行路由匹配

//  2）、前置守卫回调函数的参数：
//      to：去哪儿。这是一个 this.$route对象。包含了，path，params，query等等。
//     from：从哪儿来，（当前路由），这也是个this.$route对象。
//     next：下一步去哪儿，相当于 this.$router.push();// 

router.beforeEach((to,from,next)=>{
    // 处理面包屑（所有路径发生变化时的公共业务）。
    doBreadcrumb(to.path);

    // if(to.path=="/Login" || to.path=="/"){
    if(to.meta.requrieAuth==false){
        next();
    }else{
        if(!sessionStorage.getItem("token")){
            next("/Login");
        }
    }
    next(true);
})

export default router;